﻿using Newtonsoft.Json.Converters;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http.Formatting;
using System.Web.Http;

namespace WebApp
{
    public static class WebApiConfig
    {
        public static void Register(HttpConfiguration config)
        {

            // Web API configuration and services

            //强制https访问
            //config.Filters.Add(new ForceHttpsAttribute());
            // 统一回传格式
            //config.Filters.Add(new ApiResultAttribute());
            // 发生异常时处理
            //config.Filters.Add(new ApiErrorHandleAttribute());
            // ToKen身份验证过滤器 更方便 不需要在这里了 具有改标签的就会自动检查
            //config.Filters.Add(new ApiAuthFilterAttribute());
            // 解决json序列化时的循环引用问题
            config.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
            //对日期格式进行统一处理
            config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(
            new IsoDateTimeConverter()
            {
                DateTimeFormat = "yyyy-MM-dd hh:mm:ss"
            }
            );
            config.MapHttpAttributeRoutes();
            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{action}",
                defaults: new { id = RouteParameter.Optional }
            );
            // 干掉XML序列化器
            //config.Formatters.Remove(config.Formatters.XmlFormatter);
            //在请求的Url加上 ?$format=xml，便可以指定响应格式
            config.Formatters.XmlFormatter.AddQueryStringMapping("$format", "xml", "application/xml");
            config.Formatters.JsonFormatter.AddQueryStringMapping("$format", "json", "application/json");

        }
    }
}
